﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CMS.Data.Repositorios;
using CMS.Data.Classes;
using App.UI.Auxiliares;

namespace App.UI.Adm
{
    public partial class Cidades : System.Web.UI.Page
    {
        CidadeRepository CidadeRepository = new CidadeRepository();
        EstadoRepository EstadoRepository = new EstadoRepository();
        Metodos metodos = new Metodos();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Session["Estado"] = null;
                grdView.PageIndex = 0;
                CarregarPagina();

            }


        }


        private void CarregarPagina()
        {
            List<Cidade> lstCidade;

            if (Session["Estado"] != null && !String.IsNullOrEmpty(Session["Estado"].ToString()))
            {
                int EstadoId = Session["Estado"].ToString().ToInt();
                lstCidade = CidadeRepository.SelectAll().Where(x => x.Estado_ID == EstadoId).OrderBy(x => x.Estado_ID).ToList();
                grdView.DataSource = lstCidade;
                grdView.DataBind();
            }
            else
            {
                lstCidade = CidadeRepository.SelectAll().OrderBy(x=> x.Estado_ID).ToList();
                if (lstCidade.Count > 0)
                {
                    grdView.DataSource = lstCidade;
                    grdView.DataBind();
                 
                    List<Estado> lstEstado = EstadoRepository.SelectAll().ToList();
                    if (lstEstado.Count > 0)
                    {
                        ddlState.DataSource = lstEstado;
                        ddlState.DataBind();

                        ddlState.Items.Insert(0, new ListItem("Selecione um estado", "0"));
                    }
                }
                grdView.PageIndex = 0;
            }
        }

        protected void btnEditar_Command(object sender, CommandEventArgs e)
        {
            Response.Redirect("CadastroCidades.aspx?CidadeId=" + e.CommandArgument);
        }
        protected void btnDeletar_Command(object sender, CommandEventArgs e)
        {
            try
            {
                if (!String.IsNullOrEmpty(e.CommandArgument.ToString()))
                {
                    Cidade Cidade = CidadeRepository.SelectById(Convert.ToInt32(e.CommandArgument));
                    if (Cidade != null)
                    {
                        CidadeRepository.Delete(Cidade);
                    }
                    //ScriptManager.RegisterClientScriptBlock(this, GetType(), "alert", "alert('Registro deletado com sucesso!')", true);
                    CarregarPagina();
                }
            }
            catch (Exception)
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "alert", "alert('Falha na tentativa de deleção deste registro!')", true);
                throw;
            }

        }

        protected void grdView_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            try
            {
                grdView.PageIndex = e.NewPageIndex;
                CarregarPagina();
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
        }

        protected void btnGoState_Click(object sender, EventArgs e)
        {
         
            List<Cidade> lstCidade = new List<Cidade>();
            if (ddlState.SelectedValue == "0")
                lstCidade = CidadeRepository.SelectAll().OrderBy(x => x.Estado_ID).ToList();
            else
            {
                lstCidade = CidadeRepository.SelectAll().Where(x => x.Estado_ID == ddlState.SelectedValue.ToInt()).OrderBy(x => x.Estado_ID).ToList();
                Session["Estado"] = ddlState.SelectedValue;
            }
            grdView.DataSource = "";
            grdView.PageIndex = 0;
            grdView.DataSource = lstCidade;
            grdView.DataBind();
            grdView.PageIndex = 0;


        }

    }
}